#define  _CRT_SECURE_NO_WARNINGS 1


#include <string.h>
#include <stdio.h>
#include <assert.h>

//int my_strcmp(const char * arr1,const char* arr2)
//{
//	assert(arr1, arr2);
//	while (*arr1 == *arr2)
//	{
//		if (*arr2 == '\0')
//			return 0;
//		arr1++;
//		arr2++;
//	}
//	return *arr1 - *arr2;
//}
//
//
//int main()
//{
//	char arr1[] = "abcde";
//	char arr2[] = "abf";
//	int ret1 = strcmp(arr1, arr2);
//	printf("%d\n", ret1);
//	int ret2 = my_strcmp(arr1, arr2);
//	printf("%d\n", ret2);
//
//	return 0;
//}

//char* my_strcat(char* arr3, const char* arr4)
//{
//	assert(arr3, arr4);
//	char* p = arr3;
//	while (*arr3)
//	{
//		arr3++;
//	}
//	while (*arr3++ = *arr4++)
//	{
//		;
//	}
//	return p;
//}
//
//
//int main()
//{
//	char arr1[20] = "hello ";
//	char arr2[] = "bit";
//	strcat(arr1, arr2);
//	printf("%s\n", arr1);
//
//	char arr3[20] = "hello ";
//	char arr4[] = "bit";
//	my_strcat(arr3, arr4);
//	printf("%s\n", arr3);
//
//	return 0;
//}

char* my_strstr(const char* arr3, const char* arr4)
{
	assert(arr3, arr4);
	char* cur = (char*)arr3;
	char* p1 = NULL;
	char* p2 = NULL;
	while (*cur)
	{
		p1 = cur;
		p2 = (char*)arr4;
		if (*p2 == '\0')
			return (char*)arr3;
		while (*p1 && *p2 && *p1 == *p2)
		{
			p1++;
			p2++;
		}
		if (*p2 == '\0')
			return cur;
		cur++;
	}
	return NULL;
}


int main()
{
	char arr1[] = "ABCDE";
	char arr2[] = "CD";
	char * p1 = strstr(arr1, arr2);
	printf("%s\n", p1);
	char arr3[] = "ABCDE";
	char arr4[] = "CD";
	char* p2 = my_strstr(arr3, arr4);
	printf("%s\n", p2);
	return 0;
}